草庐IT

Spring Mongo Repository 多态性

全部标签

java - Hibernate 多态 HQL SELECT 语句

我正在使用Hibernate注释来持久化我的类。目前我正在使用以下策略来映射类我有一个抽象类,它是父类,我有两个继承自它的子类爸爸妈妈。我是这样映射的:@MappedSuperclasspublicabstractclassParent{privateintage;privateStringname;...}另外两个类是这样声明的:@EntitypublicClassFatherextendsParent{privatebooleanhaveMustash;...}所以基本上场景是“每个类一个表”。现在我想创建一个HibernateHQL语句来更新parent的年龄,无论其类型如何(母

java - Java中抽象和多态的优点

这个问题在这里已经有了答案:Whatisthedifferencebetweenaninterfaceandabstractclass?(38个答案)关闭7年前。我正在研究Java中的抽象概念。这些是我的理解:抽象是呈现函数签名和隐藏实现的方法,留给可以实现/扩展接口(interface)/抽象类的用户。通过这种方式,我们可以实现更大范围的代码修改和可重用性。我们可以将实时对象与程序代码中的对象密切相关。这些是我的问题:当所有的方法都抽象后,抽象类可以表现得像接口(interface),为什么我们还需要单独的接口(interface)?请举例说明以便更好地理解。我们能否在功能基础上调用

java - 具有嵌套类型信息属性的 Jackson 多态反序列化

我受到给定JSON结构的限制:{"metadata":{"eventName":"FooEvent","field1":"bla"},"event":{...}}如何使用多态反序列化和嵌套类型信息属性对其进行反序列化?我在@JsonTypeInfo中使用metadata.eventName嵌套属性,如下所示:@JsonTypeInfo(use=Id.NAME,include=As.EXISTING_PROPERTY,visible=true,property="metadata.eventName")@JsonSubTypes({@Type(name="fooEvent",value=

Java多态和向下转型

我正在使用Java的反射API,我正在编写检查给定对象并描述其字段、方法等的方法。我正在使用getFields()方法迭代不同的属性并显示对象内容:publicstaticvoiddisplay(Integeri){System.out.println("Aninteger:"+i);}//Basicallyamethodforeachprimitivetypewrapperpublicstaticvoiddisplay(Objecto){for(Fieldf:c.getFields()){System.out.println("A"+o.getClass()+"whichiscomp

java - 多态性和 DTO 对象创建

我开发的应用程序包含几个层次。我们有返回模型对象的DAO层。我们还有映射器实例化DTO对象并将它们发送给客户端。实体映射到Controller层中的DTO。我已经在几个实体类中引入了继承。让我们假设如下图所示classdiagram(notenoughreputationpointstopastimagedirectly)我向DAO询问具体动物园的动物名单。然后我得到列表Listanimals,但它们是具体类型,因为Animal是抽象的,我们不能在数据库中只有Animal。我想从这个模型对象创建DTO。我必须使用映射器,其中我有if..else语句检查每只动物的类型,然后创建适当的DT

java - Spring Boot 中的多态配置属性

我想在Spring上使用多态配置属性,使用Spring的@ConfigurationProperties注释。假设我们有以下POJO类。publicclassBase{privateStringsharedProperty;publicStringgetSharedProperty(){returnsharedProperty;}publicStringsetSharedProperty(StringsharedProperty){this.sharedProperty=sharedProperty;}}publicclassFooextendsBase{privateStringfo

java - Hibernate 多态查询

我有两个类,Person和Company,派生自另一个类Contact。它们在两个表(Person和Company)中以多态方式表示。简化的类如下所示:publicabstractclassContact{Integerid;publicabstractStringgetDisplayName();}publicclassPersonextendsContact{StringfirstName;StringlastName;publicStringgetDisplayName(){returnfirstName+""+lastName;}}publicclassCompanyexten

java - Java的clone()方法是实现多态克隆的唯一途径吗?

我需要为我的类(class)配备多态克隆(深拷贝),即我需要这样的东西才能工作:SuperTypeoriginal=newSubType();SuperTypecopy=original.clone();其中original.clone()可以被任何机制替代以创建深拷贝,copy的实际类型应为SubType,因为original也是一个SubType。clone()方法和Cloneable接口(interface)是实现此目的的唯一方法吗?不能使用工厂方法和复制构造函数,因为实际的类只在运行时才知道,对吧?除了那些序列化-反序列化方法和Javadeep-cloninglibrary之外

java - Java Hotspot 服务器中多态性的高成本

当我在JavaHotspot客户端中运行计时测试程序时,我得到了一致的行为。然而,当我在Hotspot服务器上运行它时,我得到了意想不到的结果。本质上,在我尝试过的某些情况下,多态性的成本高得令人无法接受复制下面。这是Hotspot服务器的已知问题/错误,还是我做错了什么?测试程序和时间如下:Inteli7,Windows8JavaHotSpot(TM)64-BitServerVM(build24.45-b08,mixedmode)Mine2:0.387028831随着我添加额外的测试,情况变得更糟。列表末尾附近的测试时间完全关闭。interfacecanDoIsSquare{bool

java - 强制两个相似的类表现得好像它们在 Java 中是多态的

摘要:我想与共享许多相似功能的两个类('Item'和'Block')交互,就好像它们是从具有这些功能的接口(interface)实现的一样,但它们不是,我无法编辑它们。我有什么选择来处理这个问题?我是否一直在编写superhacky代码?详细信息:我正在使用Java开发minecraftmod,使用minecraft的一部分是我无法编辑游戏的基本代码。游戏有两个基本类别;“Block”和“Item”,这两者共享许多功能,但是开发人员并没有让它们实现一个接口(interface)(我希望它们有)。为了保持我的代码干净并避免大量if语句在处理Blocks和Items之间切换,我想将两者都保